模型编排(AI Flow)是 PIGX AI 平台提供的可视化工作流设计工具,支持通过拖拽节点的方式构建复杂的 AI 应用流程。
通过可视化编排,无需编写代码即可快速搭建 AI 应用,降低开发门槛,提升开发效率
外部系统可以通过 HTTP API 或 Java SDK 两种方式调用已编排的 AI Flow,平台会根据配置调用相应的 AI 模型(如 DeepSeek、Qwen 等)完成任务。
AI Flow 支持两种调用模式,系统会根据节点类型和配置自动选择合适的调用方式:
特点:
使用建议:
示例流程:
特点:
使用建议:
示例流程:
以下节点支持流式和非流式两种调用模式:
| 节点类型 | 节点名称 | 流式特性 |
|---|---|---|
| AI能力 | LLM大模型 | ✅ 支持流式输出,逐字返回生成内容 |
| AI能力 | RAG知识库 | ✅ 支持流式输出,实时返回检索增强结果 |
| AI能力 | MCP服务 | ✅ 支持流式输出,实时返回工具调用结果 |
| AI能力 | OCR识别 | ✅ 支持流式输出,返回识别结果 |
| AI能力 | 文档解析 | ✅ 支持流式输出,返回解析内容 |
| 多模态 | 图片生成 | ✅ 支持流式输出,返回生成的图片URL |
| 多模态 | 音频生成 | ✅ 支持流式输出,返回生成的音频URL |
| 外部集成 | Dify工作流 | ✅ 支持流式输出,实时返回Dify响应 |
| 外部集成 | Coze对话 | ✅ 支持流式输出,实时返回Bot对话内容 |
不要在流式节点后面再接流式节点。第一个流式节点执行完毕后 SSE 连接已断开,后续流式节点的输出无法发送给前端用户。
错误示例(流式节点后接流式节点):
在上述错误示例中,LLM 节点执行完毕后 SSE 连接断开,RAG 节点的流式输出无法送达用户。
问题分类、结构化输出等控制流程的节点不支持流式调用,它们需要完整的处理结果才能进行下一步判断
系统提供 22 种节点类型,分为 5 大类别:
在支持参数占位符的配置项中,使用 ${变量名} 格式引用其他节点的输出变量,例如 ${arg1} 或 ${nodeId.variableName}
系统会在运行时自动将占位符替换为实际的变量值,实现节点间的数据传递。
工作流的起始节点,每个工作流必须有且仅有一个开始节点。用于定义工作流的输入参数,作为后续节点的数据源。
配置项
变量列表
定义工作流的输入参数,支持以下组件类型:
| 组件类型 | 说明 |
|---|---|
| 输入框 | 单行文本输入 |
| 下拉框 | 预设选项选择 |
| 数字框 | 数值输入 |
| 文件 | 文件上传 |
| 图片 | 图片上传 |
${变量名} 引用输出变量
result(Object):开始节点接收到的全部输入参数工作流的结束节点,标记流程执行完毕。
输出变量
content(Object):结束节点接收到的最终输出对象result(Object):流程最终结果对象根据条件判断选择不同的执行分支,支持多路分支。
配置项
变量输入
分支判断代码
function main(args) { return 0; }args.arg1 访问输入变量示例代码:
分支列表
输出变量
index(Number):选中的分支索引result(String):JavaScript 函数 main(args) 的返回值重复执行子流程,支持迭代控制和批量处理。
配置项
最大迭代次数
迭代变量名
index)${index} 访问当前迭代次数子流程配置
输出变量
iterations(Number):最大迭代次数调用大语言模型进行对话和文本生成,支持多轮对话和多模态输入。
配置项
变量输入
对话消息
${变量名}示例提示词:
模型配置
高级参数
输出变量
content(String):模型生成的文本内容使用 AI 对用户问题进行智能分类,根据分类结果选择后续处理分支。
配置项
变量输入
对话消息
${变量名}示例提示词:
模型配置
分类列表
输出变量
index(Number):分类命中的分支索引result(String):分类结果值将 AI 输出转换为结构化 JSON 格式,便于后续节点处理。
配置项
变量输入
对话消息
${变量名}示例提示词:
模型配置
输出字段定义
示例字段定义:
JSON Schema 预览
输出变量
result(Object):结构化 JSON 对象tokens(Number):本次调用消耗的 Token 数检索增强生成,从知识库中检索相关信息并结合大模型生成回答。
配置项
变量输入
知识库选择
仅召回
提示词
${变量名}示例提示词:
输出变量
result(String / Array):RAG 生成结果;开启“仅召回”且为非流式调用时返回召回结果数组ragSearched(String):是否命中检索内容,返回 1 或 0调用模型上下文协议(Model Context Protocol)服务,扩展 AI 能力。
配置项
变量输入
MCP 服务
请求提示词
${变量名}示例:
输出变量
content(String):MCP 服务返回的文本内容role(String):固定为 assistanttokens(Number):本次调用消耗的 Token 数图像文字识别,从图片中提取文本内容。
配置项
变量输入
OCR 配置选择
高级分析
模型配置(高级分析开启时)
输出变量
result(Object):OCR 服务返回的原始识别结果对象解析 Office 和 PDF 文档,提取文本内容。
配置项
变量输入
解析策略
输出变量
result(String):提取的文本内容根据文本描述生成图片,支持文生图和图生图。
配置项
变量输入
生成配置
模型选择
正向提示词
负向提示词
图像尺寸
高级参数
输出变量
imageUrl(String):前端可直接渲染的 Markdown 图片内容result(String):图像生成接口返回的原始图片访问路径将文本转换为语音(TTS)。
配置项
变量输入
生成配置
TTS模型
音色选择
语速调节
音量增益
输出变量
audioUrl(String):前端可直接播放的 HTML 音频内容result(String):语音生成接口返回的原始音频访问路径执行自定义 JavaScript 代码,进行数据转换和处理。
配置项
变量输入
args 对象访问代码编辑
function main(args) { return ""; }args.变量名示例代码:
代码节点通过 JavaScript 的 args 对象访问输入变量,而非占位符语法,例如 args.arg1 而不是 ${arg1}
输出变量
result(String):代码执行返回值输出固定或动态文本内容。
配置项
变量输入
文本内容
${变量名}示例:
输出变量
content(String):文本内容result(String):文本内容执行数据库 SQL 查询,获取或操作数据。
配置项
变量输入
数据源选择
SQL语句
${变量名}示例 SQL:
使用占位符时注意 SQL 注入风险,建议对用户输入进行验证和过滤,或使用参数化查询
输出变量
result(Array):查询结果行数据数组sql(String):实际执行的 SQL 语句发送 HTTP/HTTPS 请求到外部 API,集成第三方服务。
配置项
变量输入
请求方法
${变量名}示例:
请求参数(Params 标签页)
请求体(Body 标签页)
请求头(Headers 标签页)
AuthorizationHTTP 节点支持在 URL、Params、Body、Headers 多个位置使用变量,实现灵活的 API 调用
输出变量
body(String):HTTP 响应体内容status(Number):HTTP 状态码headers(Object):HTTP 响应头result(String):与 body 相同,便于后续节点继续引用发送消息通知到外部系统(如钉钉、企业微信等)。
配置项
变量输入
消息内容
${变量名}示例:
输出变量
result(Boolean):发送是否成功调用外部 Dify 平台的 Workflow 能力。
配置项
变量输入
Dify 服务配置
https://api.dify.ai)app-xxxxx)text)Workflow 输入参数
${变量名} 格式示例映射:
${arg1}${arg2}文件映射
通过输入参数列表将工作流变量映射到 Dify 的 Workflow 输入,实现无缝集成
输出变量
content(String):Dify 返回的主要内容result(Object,可选):阻塞模式下返回的完整 outputs 对象workflowRunId(String,可选):阻塞模式下返回的工作流运行 IDtaskId(String,可选):阻塞模式下返回的任务 IDtokens(Number,可选):流式模式下返回的 Token 统计timestamp(Number):节点执行时间戳调用 Coze 平台的 Bot 进行对话。
配置项
变量输入
Coze 服务配置
https://api.coze.cnhttps://api.coze.compat_xxxxxx)content)对话输入参数
${变量名} 格式示例映射:
${arg1}${userId}输出变量
content(String):Bot 回复内容tokens(Number):消耗的令牌数conversationId(String):对话 ID${变量名}${节点ID.变量名}args.变量名(JavaScript 对象)系统会在运行时自动将占位符替换为实际的变量值。
| 节点类型 | 支持占位符的字段 | 语法示例 |
|---|---|---|
| LLM大模型 | 对话消息内容 | ${arg1} |
| 问题分类 | 对话消息内容 | ${arg1} |
| 结构化输出 | 对话消息内容 | ${arg1} |
| RAG知识库 | 提示词 | ${arg1} |
| MCP服务 | 请求提示词 | ${arg1} |
| 执行代码 | 函数参数访问 | args.arg1 |
| 分支节点 | 函数参数访问 | args.arg1 |
| 文本节点 | 文本内容 | ${userName} |
| DB数据库 | SQL语句 | ${arg1} |
| HTTP请求 | URL、参数、请求体、请求头 | ${userId} |
| 消息通知 | 消息内容 | ${ticketId} |
| Dify工作流 | 输入参数值 | ${arg1} |
| Coze对话 | 输入参数值 | ${arg1} |
| 循环节点 | 子流程中访问迭代变量 | ${index} |
当您完成 AI Flow 的编排和测试后,可以通过 PIG AI SDK 在外部应用中调用已发布的工作流。
使用 PIG AI SDK 可以轻松将编排好的 AI Flow 集成到您的 Java 应用中,支持流式和阻塞两种调用模式
完整的 SDK 使用说明、Spring Boot 集成、异常处理等内容,请参考 PIG AI SDK 使用指南。